﻿#include "qsalaydelegate.h"
#include <QSpinBox>


QSalayDelegate::QSalayDelegate(QObject *parent):QStyledItemDelegate(parent)
{

}

QWidget *QSalayDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    QSpinBox*editor=new QSpinBox(parent);
    editor->setMinimum(2000);
    editor->setMaximum(100000);
    editor->setSingleStep(100);
    return editor;
}

void QSalayDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
    QSpinBox *spinBox=static_cast<QSpinBox *>(editor);//因为参数editor的类型是祖宗所以我们要强制类型转换
    int value=index.model()->data(index).toUInt();//通过模型索引拿到模型数据
    spinBox->setValue(value);//设置代理组件数据
}

void QSalayDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
    QSpinBox *spinBox=static_cast<QSpinBox *>(editor);//相当于拿到代理组件
    spinBox->interpretText();//解析数据，这里相当于转换成整数
    int value=spinBox->value();//拿到代理的数据
    model->setData(index,value);//设置模型数据
}

void QSalayDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
    editor->setGeometry(option.rect);//默认的位置就是在单元格的矩形位置
}

